/**
  题目:
     给定一个二叉树，检查它是否是镜像对称的。

 

     例如，二叉树 [1,2,2,3,4,4,3] 是对称的。
     
         1
        / \
       2   2
      / \ / \
     3  4 4  3
      
     
     但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
     
         1
        / \
       2   2
        \   \
        3    3
 
 
 
     
 
 
   思路:
      1. 递归：合并
	  
	 
*/
 /**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if(!root){
            return true;
        }
        return check(root->left,root->right);
    }

    bool check(TreeNode*left,TreeNode*right){
        if(!left||!right){
            return !left&&!right;
        }
        return (left->val==right->val)&&check(left->left,right->right)&&check(left->right,right->left);
    }
};